曾經有遇過應徵者因為太過於依賴框架,導致被問到基礎的 SQL 語法反而答不出來, 用過了非常方便的框架之後,還是得了解一下 SQL 的原理,才不會遇到這種窘境。
Laravel 本身有一個內建好用的 DB Facade 專門處理這件事情,先搭配 Tinker 來做個範例吧
先在 Tinker 紀錄 SQL 的服務DB::enableQueryLog();
開始查詢資料,這次有多加入一個 where 條件 App\Models\User::with('posts')->with('posts.comments')->where('name', 'kurt')->first()->toArray()
調出 SQL 語法DB::getQueryLog()

前面有提到框架已經代替開發者避免了 SQL Injection ,此時可以看到第一句 SQL 使用了 ? 這個符號將其帶入語法中,此種用法稱為「預處理語句」。
當然有些比較複雜的 SQL 或是顯示格式也是可以接用 DB Facade 來下指令,下方做一個 JOIN 的範例DB::table('posts')->join('users', 'writer_id', '=', 'users.id')->get()
在運用框架進行快速開發的時候也是要知道其原理,才能用的順手也不會用錯,明天終於可以介紹神奇設計了!